home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Demos / A.D. Software / OOFILE 1.3b4d6.sit / OOFILE 1.3b4d6 / MacCodeWarriorDemo1.3b4d6 / docs / samples / ooftst23.cpp < prev    next >
C/C++ Source or Header  |  1997-03-17  |  2KB  |  125 lines

  1. #include "oofile.h"
  2. #include "oofios.h"
  3. // Copyright 1996 A.D. Software. All Rights Reserved
  4.  
  5. // OOFTEST23
  6.  
  7. // this sample creates a file then adds indices
  8.  
  9. // Simple stream I/O is used to interact with the user.
  10.  
  11. DECLARE_CLASS(dbTest23)
  12.     dbChar        f1;
  13.     dbUlong        f2;
  14.     dbReal        f3;  
  15.     
  16.     dbTest23() : f1(20, "F1", kIndexCompress),
  17.                 f2("F2", kIndexNoDups),
  18.                 f3("F3")
  19. {};
  20.     };
  21.  
  22.  
  23. // show a common technique, using our own class to contain all the database
  24. class test23DB : public dbConnect_ctree
  25. {
  26. public:
  27.     test23DB();
  28.     
  29.     void    addTestData(unsigned long startNum, unsigned long endNum);
  30.     void    displaySubset();
  31.  
  32. // tables
  33.     dbTest23          mTable;
  34.  
  35. };
  36.  
  37. test23DB::test23DB()
  38. {
  39.     useSeparateFiles();
  40.     useExclusiveAccess();    // force this despite filesharing library (FPUTFGET option)
  41. }
  42.  
  43. void
  44. test23DB::addTestData(unsigned long startNum, unsigned long endNum)
  45. {
  46.     const char* names[] = {
  47.         "Andy",
  48.         "Fred",
  49.         "Sally",
  50.         "Zach",
  51.         "William",
  52.         "Sue",
  53.         "Pamela",
  54.         "Tanith",
  55.         "Jane",
  56.         "Frederick"
  57.     };
  58.     const unsigned short kNumNames = 10;  // sizeof(names);
  59.     for (unsigned long i=startNum; i<endNum; i++) {
  60.         mTable.newRecord();
  61.         const unsigned short iName = i%kNumNames;
  62.         mTable.f1 = names[iName];    // one of 10 names
  63.         mTable.f2 = i;
  64.         mTable.f3 = i+0.5;
  65.         mTable.saveRecord();
  66.     }
  67. }
  68.  
  69. void
  70. test23DB::displaySubset()
  71. {
  72.     mTable.search(mTable.f1=="Andy");
  73.     cout << mTable << endl << endl;
  74. }
  75.  
  76. int main()
  77. {
  78.     cout << "OOFILE Validation Suite - Test 23\n"
  79.          << "This tests the effect of adding indices to a database\n\n";
  80.     
  81.     test23DB  theDB;
  82.  
  83.     if (dbConnect::fileExists("dbtest23.dat")) {
  84.         theDB.openConnection("");
  85.         theDB.deleteAll();
  86.     }
  87.     else {
  88.         cout << "Creating a new database\n";
  89.         theDB.newConnection("");
  90.     }
  91.  
  92.     test23DB  aDB;
  93.  
  94.     if (dbConnect::fileExists(":adb:dbtest23.dat")) {
  95.         aDB.openConnection("adb");
  96.         aDB.deleteAll();
  97.     }
  98.     else {
  99.         cout << "Creating a new database\n";
  100.         aDB.newConnection("adb");
  101.     }
  102.  
  103.     cout << "Adding 500 test records with indexing active\n";
  104.     theDB.addTestData(0, 51);
  105.     theDB.displaySubset();
  106.  
  107.     theDB.mTable.suppressIndices();    
  108.     cout << "Adding 500 test records with indexing disabled\n";
  109.     theDB.addTestData(51, 101);
  110.     
  111.     aDB.mTable.newRecord();
  112.     aDB.mTable.f1 = "testing";
  113.     aDB.mTable.saveRecord();
  114.  
  115.     //theDB.displaySubset();
  116.     theDB.mTable.rebuild();
  117.  
  118.     cout << "Displaying records after rebuild\n";    
  119.     theDB.displaySubset();
  120.  
  121.     cout << endl <<"Test Completed" << endl;
  122.     
  123.     return EXIT_SUCCESS;
  124.